package package_paiement;

import org.omg.CORBA.StringHolder;

import operateur.Err_id;
import operateur.GestionPaiementPOA;
import operateur.MontantNegatif;
import package_gestColis.Md5;

import com.projet.corba.gestion.utilisateur.GestionUtilisateur;

public class GestionPaiement extends GestionPaiementPOA {
	
	private Banque bp ;
	private String ID;
	
	private GestionPaiement() {
		bp = new Banque("Theo_money_and_more");
		ID = Md5.encode("Ludovic" + "GARCIA" + "monMdp");
		creerCpt(ID, "plop", 15f);
	}
	
	private static class GestionPaiementHolder{
		private final static GestionPaiement instance = new GestionPaiement();
	}
	public static GestionPaiement getInstance(){
		return GestionPaiementHolder.instance;
	}
	
	public String showComptes()
	{
		return bp.toString();
	}
	
	public float getSolde(String IDUtilisateur)
	{	System.out.println("getSolde : "+IDUtilisateur+ bp.getSolde(IDUtilisateur));
		return bp.getSolde(IDUtilisateur);
	}
	
	public float debiterCpt(String IDUtilisateur, float montant) throws MontantNegatif
	{	System.out.println("debiterCpt : "+IDUtilisateur);
		float reponse = bp.debiterCpt(IDUtilisateur, montant);
	if(reponse < 0){
		throw new  MontantNegatif(reponse);
	}
		return bp.debiterCpt(IDUtilisateur, montant);
	}
	
	public float crediterCpt(String IDUtilisateur, float montant)
	{	System.out.println("crediterCpt : "+IDUtilisateur);
		return bp.crediterCpt(IDUtilisateur, montant);		
	}
	
	public float creerCpt(String IDUtilisateur, String infoPaiement, float montant)
	{	System.out.println("creerCpt : "+IDUtilisateur);
		return bp.creerCpt(IDUtilisateur, infoPaiement, montant);
	}
}
